home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / tsrhelp.zip / SCREEN.PAS < prev    next >
Pascal/Delphi Source File  |  1992-08-12  |  2KB  |  77 lines

  1. unit screen;
  2.  
  3. Interface
  4. uses crt,dos;
  5.  
  6.   type
  7.        ScreenRec = Record
  8.          Character:Byte;
  9.          Attribute:Byte;
  10.        end;
  11.  
  12.        SnapShot = record
  13.          Screen:array[1..4000] of ScreenRec;
  14.          StoreX:byte;
  15.          StoreY:byte;
  16.        end;
  17.  
  18.  
  19.        ScreenStore=object
  20.          Memory:SnapShot;
  21.          constructor Init(InitX,InitY,InitChar,InitColor:byte);
  22.          procedure storescreen;
  23.          procedure restorescreen;
  24.        end;
  25.  
  26.        ScreenStorePointer = ^ScreenStore;
  27.  
  28. Implementation
  29.  
  30.   CONSTRUCTOR ScreenStore.Init(InitX,InitY,InitChar,InitColor:byte);
  31.     {** Initializes to Cleared Screens **}
  32.     var
  33.       Count:integer;
  34.  
  35.     begin
  36.       Count:=1;
  37.       while Count<=4000 do
  38.         begin
  39.           FillChar(Memory.Screen[Count].Character,
  40.             SizeOf(Memory.Screen[Count].Character),InitChar);
  41.           FillChar(Memory.Screen[Count].Attribute,
  42.             SizeOf(Memory.Screen[Count].Attribute),InitColor);
  43.           inc(Count);
  44.         end;
  45.       Memory.StoreX:=InitX;
  46.       Memory.StoreY:=InitY;
  47.     end;
  48.  
  49.   PROCEDURE ScreenStore.StoreScreen;
  50.     var
  51.       MonoAddress:  char absolute $B000:0000;
  52.       ColorAddress: char absolute $B800:0000;
  53.       begin
  54.         if lastmode=mono then
  55.           move(monoAddress,Memory.Screen,8000)
  56.         else
  57.           move(colorAddress,Memory.Screen,8000);
  58.         Memory.StoreX:=WhereX;
  59.         Memory.StoreY:=WhereY;
  60.       end;
  61.   {STORESCREEN}
  62.  
  63.   PROCEDURE ScreenStore.RestoreScreen;
  64.     var
  65.       MonoAddress:  char absolute $B000:0000;
  66.       ColorAddress: char absolute $B800:0000;
  67.       begin
  68.         if lastmode=mono then
  69.           move(Memory.Screen,monoAddress,8000)
  70.         else
  71.           move(Memory.Screen,colorAddress,8000);
  72.         gotoxy(Memory.StoreX,Memory.StoreY);
  73.       end;
  74.   begin
  75.   end.
  76.  
  77.